package com.chiyi.config;

import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger配置
 */
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
public class Swagger2Config {


    private String getSwaggerHost() {
        return "127.0.0.1:8090";
    }

    //生成所有模块的 Api 文档
    @Bean
    public Docket systemAPI() {
        return docket("全部接口", "API接口文档", "com.chiyi.controller");
    }


    private Docket docket(String groupName, String title, String basePackage) {
        return new Docket(DocumentationType.SWAGGER_2)
                .host(getSwaggerHost())
                .apiInfo(apiInfo(title))
                .groupName(groupName)
                .enable(true)
                .select()
                // 设置需要被扫描的类，这里设置为添加了@Api注解的类
                .apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.any())
                .build();
    }


    //设置api信息
    private ApiInfo apiInfo(String title) {
        return new ApiInfoBuilder()
                .title(title)
                .description("文档说明：根据Swagger的规范说明，详细列出接口文档的说明，包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息，使用swagger-bootstrap-ui能根据该文档说明，对该接口的使用情况一目了然。\n" +
                        "在线调试：提供在线接口联调的强大功能，自动解析当前接口参数,同时包含表单验证，调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息，帮助开发者在线调试，而不必通过其他测试工具测试接口是否正确,简介、强大。\n" +
                        "个性化配置：通过个性化ui配置项，可自定义UI的相关显示信息\n" +
                        "离线文档：根据标准规范，生成的在线markdown离线文档，开发者可以进行拷贝生成markdown接口文档，通过其他第三方markdown转换工具转换成html或pdf，这样也可以放弃swagger2markdown组件\n")
                .version("1.0.0")
                .termsOfServiceUrl("本地文档路径：http://127.0.0.1:8090/doc.html")
                .build();
    }



}
